package com.mao.lambda;

import com.mao.interclass.Student;

import javax.swing.*;
import java.util.Arrays;

public class lambdaDemo2 {
    public static void main(String[] args) {
        test1();
        test2();
    }
    public static void test1(){
        // 完成数组排序，理解匿名内部类的用法
        // 准备一个学生类型的数组，存放6个学生对象
        Student[] students = new Student[6];
        students[0] = new Student("吴京", 36, 1.80, '男');
        students[1] = new Student("刘德华", 60, 1.76, '男');
        students[2] = new Student("周星驰", 50, 1.88, '男');
        students[3] = new Student("吴奇隆", 40, 1.70, '男');
        students[4] = new Student("吴孟达", 30, 1.68, '男');
        students[5] = new Student("周润发", 20, 1.73, '男');
        // 调用API对数组进行排序
        // public static <T> void sort(T[] a, Comparator<T> c)
//        Arrays.sort(students, new Comparator<Student>() {
//            @Override
//            public int compare(Student o1, Student o2) {
//                // 按照年龄进行排序
//                return o1.getAge() - o2.getAge();
//            }
//        });

//        Arrays.sort(students, (o1,  o2) -> {
//            // 按照年龄进行排序
//            return o1.getAge() - o2.getAge();
//        });
        Arrays.sort(students, (o1,  o2) -> o1.getAge() - o2.getAge());
        for (Student s : students) {
            System.out.println(s);
        }
    }
    public static void test2(){
        // 需求：创建一个登录窗口，窗口上只有一个登录按钮
        JFrame win = new JFrame("登录窗口");
        win.setSize(300, 200);
        win.setLocationRelativeTo(null);// 居中显示
        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel panel = new JPanel();
        win.add(panel);

        JButton btn = new JButton("登录");
        panel.add(btn);
        // 匿名内部类
//        btn.addActionListener(new ActionListener() {
//            @Override
//            public void actionPerformed(ActionEvent e) {
//                System.out.println("登录成功");
//            }
//        });
        // 参数类型可以不写
        // 如果只有一个参数， 参数类型省略的同时，“()”也可以省略，但是多个参数，不能省略
        // 如果Lambda表达式只有一行代码，可以省略大括号和“;”，如果这行是return语句，return也得省
        btn.addActionListener(e -> System.out.println("登录成功"));


        win.setVisible(true);

    }
}
